# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.AppEngine.V1.Model.StaticFilesHandler do
  @moduledoc """
  Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.

  ## Attributes

  *   `applicationReadable` (*type:* `boolean()`, *default:* `nil`) - Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
  *   `expiration` (*type:* `String.t`, *default:* `nil`) - Time a static file served by this handler should be cached by web proxies and browsers.
  *   `httpHeaders` (*type:* `map()`, *default:* `nil`) - HTTP headers to use for all responses from these URLs.
  *   `mimeType` (*type:* `String.t`, *default:* `nil`) - MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
  *   `path` (*type:* `String.t`, *default:* `nil`) - Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
  *   `requireMatchingFile` (*type:* `boolean()`, *default:* `nil`) - Whether this handler should match the request if the file referenced by the handler does not exist.
  *   `uploadPathRegex` (*type:* `String.t`, *default:* `nil`) - Regular expression that matches the file paths for all files that should be referenced by this handler.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :applicationReadable => boolean() | nil,
          :expiration => String.t() | nil,
          :httpHeaders => map() | nil,
          :mimeType => String.t() | nil,
          :path => String.t() | nil,
          :requireMatchingFile => boolean() | nil,
          :uploadPathRegex => String.t() | nil
        }

  field(:applicationReadable)
  field(:expiration)
  field(:httpHeaders, type: :map)
  field(:mimeType)
  field(:path)
  field(:requireMatchingFile)
  field(:uploadPathRegex)
end

defimpl Poison.Decoder, for: GoogleApi.AppEngine.V1.Model.StaticFilesHandler do
  def decode(value, options) do
    GoogleApi.AppEngine.V1.Model.StaticFilesHandler.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.AppEngine.V1.Model.StaticFilesHandler do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
